/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"BBC2A588-2B98-4754-9A33-A6C73346DD1B",variableType:4}
 */
var gIdRelacionado = null;

/**
 * @type {Array}
 *
 * @properties={typeid:35,uuid:"6698B6C7-6EFC-4BA2-A8A7-73A98DC69F4A",variableType:-4}
 */
var ar = new Array();

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"9F143F1F-B533-45CC-A4B4-339E6CAF9701",variableType:4}
 */
var gEstadoAbm = 0;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"B8F5A647-DAA2-4606-914A-B637D2DDB560",variableType:4}
 */
var gIdFormActual = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"C0C9625E-618A-4935-B1F1-1DBAAD9EA628",variableType:4}
 */
var gIdSolucion = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"85650FCA-38EA-408A-8073-2F9C8B15B4A8",variableType:4}
 */
var gLimiteCsv = 1000;

/**
 * @type {String}
 *
 * @properties={typeid:35,uuid:"D2BF963F-0F9A-4DD8-BF1C-F9FC30A40A50"}
 */
var gLoginPass = null;

/**
 * @type {String}
 *
 * @properties={typeid:35,uuid:"BA60F4AE-C6B9-4ED2-8E62-7030BC04835C"}
 */
var gLoginUserv = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"CBA7948F-DF99-49C6-B39C-C31741FB62E8",variableType:4}
 */
var gUservID = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"16A379AF-9457-4193-8910-B7B4F185F89B",variableType:4}
 */
var gUsuarioID = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"C2DC9B7F-0189-4F11-95D3-D5DE927B510A",variableType:4}
 */
var gValorUno = 1;

/**
 * @type {String}
 *
 * @properties={typeid:35,uuid:"A9266762-BC03-4234-892F-DA5752D80F21"}
 */
var textoBusqueda = null;

/**
 * @type {Array}
 *
 * @properties={typeid:35,uuid:"32C0F9F5-A5CA-474D-8EB4-5893033DBC85",variableType:-4}
 */
var gHistoriaIndice = new Array();

/**
 * @properties={typeid:24,uuid:"78067546-D090-4EE7-89CA-B2DBCF26CCCA"}
 * @AllowToRunInFind
 */
function buscar()
{
	/** @type {String}*/
	var search = globals.textoBusqueda
	altaFavoritos(search)

	if(search)
	{
		var texto = JSColumn.TEXT
		var searchStr = '#%' + search + '%'
		var dataType
		if(search.indexOf('/') != -1 || search.indexOf('-') != -1)
		{
			dataType = JSColumn.DATETIME
			search = new Date(search)
		}
		else if(search.indexOf('.') != -1 && !isNaN(parseFloat(search)))
		{
			dataType = JSColumn.NUMBER
			search = parseFloat(search)
		}
		else if(!isNaN(parseInt(search)) && search.indexOf('.') == -1)
		{
			dataType = JSColumn.INTEGER
			search = parseInt(search)
		}
		
		var tbl = databaseManager.getTable( forms[gidformactual_to_forms.nombre].controller.getDataSource())
		/**@type {Array} */
		var cols = tbl.getColumnNames()
		cols = databaseManager.convertToDataSet( cols)

		var fs = forms[gidformactual_to_forms.nombre].foundset
		if (fs.find())
		{
			var i= 1
			while (( i <= cols.getMaxRowIndex()) && (cols.getValue(i,1) != null))
			{
				var c = cols.getValue(i,1)
				var tipo = tbl.getColumn(c).getType()
				if (tipo != dataType && tipo != texto)
					cols.removeRow(i)
				else
				{
					fs.newRecord()
					if (tipo == dataType)
						fs.setDataProviderValue(cols.getValue(i,1),search)
					else
						fs.setDataProviderValue(cols.getValue(i,1),searchStr)
					i++
				}
			}
	
			var found = fs.search(false)
			if (found > 0)
			{
				if (gidformactual_to_forms.pantallas_to_pantalla_asociada != null)
					forms[gidformactual_to_forms.pantallas_to_pantalla_asociada.nombre].controller.loadRecords(fs)
				forms['menu_opciones'].elements.lbl_reg.text = '1 de '+ forms[gidformactual_to_forms.nombre].controller.getMaxRecordIndex() + ' registros'
	
			}
			else
				globals.DIALOGS.showWarningDialog('Aviso','No se encontraron datos con esas condiciones','OK')
		}
		else
			globals.DIALOGS.showWarningDialog('Aviso','No se pudo hacer la búsqueda por un error inesperado','OK')
	}
}

/**
 * @AllowToRunInFind
 * 
 * @param {String} search
 *
 * @properties={typeid:24,uuid:"6B2BB3C4-2ADF-4568-85D5-4044C9739C52"}
 */
function altaFavoritos(search)
{
	/** @type {JSFoundSet<db:/fwk_navigation_infocom/busquedas_usuario>}*/
	var $fav = databaseManager.getFoundSet('fwk_navigation_infocom','busquedas_usuario')
	
	$fav.find()
	
	$fav.texto = '#' + search
	
	if ($fav.search() == 0)
	{
		$fav.newRecord()
		
		$fav.usuario_id = globals.gUsuarioID
		$fav.texto = search
	}
	else
	{
		$fav.cantidad++
	}
	databaseManager.saveData($fav.getRecord($fav.getSelectedIndex()))
}

/**
 * @param {Number} [p]
 * @properties={typeid:24,uuid:"407B4045-CA8F-4ACB-83A8-106FD96D459D"}
 */
function cambiarConfirmar(p)
{
	var $post = ''
/*	if (application.getApplicationType() == APPLICATION_TYPES.WEB_CLIENT)
		$post = '_web'*/
	if (p == null)
	{
		var currentState = forms['menu_opciones'].elements['btn_confirmar'+$post].visible;
		forms['menu_opciones'].elements['btn_confirmar'+$post].visible = !currentState;
		
		currentState = forms['menu_opciones'].elements['btn_cancelar'+$post].visible;
		forms['menu_opciones'].elements['btn_cancelar'+$post].visible = !currentState;
	}
	else
	{
		forms['menu_opciones'].elements['btn_confirmar'+$post].visible 	= p
		forms['menu_opciones'].elements['btn_cancelar'+$post].visible 	= p
	}
}

/**
 * @properties={typeid:24,uuid:"4DF9D5E0-B1FC-4E81-A2FD-583B937351CB"}
 */
function config()
{
	if (gidformactual_to_forms.modificable == 0)
		forms[gidformactual_to_forms.nombre].controller.readOnly = true
	globals.filtrarMenu()
	globals.cambiarEstilo(gidformactual_to_forms.nombre)
}

/**
 * @param {String} frm
 * 
 * @properties={typeid:24,uuid:"419E1580-E93B-4F15-8B09-93E467A34247"}
 */
function cambiarEstilo(frm)
{
	var $frm = solutionModel.getForm(frm)
	$frm.styleName = gusuario_to_rel_solucion_usuario.estilo
	var $tabs = $frm.getTabPanels()
	for (var i = 0 ; i < $tabs.length ; i++)
	{
		var $tabs2 = $tabs[i].getTabs()
		for (var j = 0 ; j < $tabs2.length ; j++)
		{
			var $frm2 = $tabs2[j].containsForm
			$frm2.styleName = gusuario_to_rel_solucion_usuario.estilo
			forms[$frm2.name].controller.recreateUI()
		}
	}
	forms[frm].controller.recreateUI()
}

/**
 * @properties={typeid:24,uuid:"DE5646DE-9E7F-4807-BA0D-AD21773265A3"}
 */
function esconderBotones()
{
	globals.setVisible('Alta',0)
	globals.setVisible('Baja',0)
	globals.setVisible('Modifica',0)
	globals.setVisible('Impresion',0)
	globals.setVisible('Movimiento',0)
	globals.setVisible('Exporta',0)
	globals.setVisible('Busqueda',0)	
	globals.cambiarConfirmar()
}

/**
 * @properties={typeid:24,uuid:"8B42F6C0-A687-456D-B7E1-CD7722657BB1"}
 */
function filtrarMenu()
{
	if (gidformactual_to_rel_pantallas_usuarios.modificable == 0)
	{
		globals.setVisible('Alta',0)
		globals.setVisible('Baja',0)
		globals.setVisible('Modifica',0)
	}
	else
	{
		globals.setVisible('Alta',gidformactual_to_forms.alta)
		globals.setVisible('Baja',gidformactual_to_forms.baja)
		globals.setVisible('Modifica',gidformactual_to_forms.modificacion)
	}
	globals.setVisible('Impresion',gidformactual_to_forms.impresion)
	globals.setVisible('Movimiento',gidformactual_to_forms.movimiento)
	globals.setVisible('Modificacion',0)
	globals.setVisible('Exporta',gidformactual_to_forms.exporta_csv)
	globals.setVisible('Busqueda',gidformactual_to_forms.habilita_busqueda)	
}

/**
 * @properties={typeid:24,uuid:"C9E4A51C-0A60-4022-8C86-F25D96B71B4A"}
 */
function mostrarBotones()
{
	if (gidformactual_to_forms.alta == 1)
		globals.setVisible('Alta',1)
	if (gidformactual_to_forms.baja == 1)
		globals.setVisible('Baja',1)
	if (gidformactual_to_forms.modificacion == 1)
		globals.setVisible('Modifica',1)
	if (gidformactual_to_forms.impresion == 1)
		globals.setVisible('Impresion',1)
	if (gidformactual_to_forms.movimiento == 1)
		globals.setVisible('Movimiento',1)
	if (gidformactual_to_forms.exporta_csv == 1)
		globals.setVisible('Exporta',1)
	globals.cambiarConfirmar()
}

/**
 * @properties={typeid:24,uuid:"CB7EEC0E-2803-46C2-9B54-A21A8441E8FA"}
 * @AllowToRunInFind
 */
function onOpenFwk()
{
	application.putClientProperty(APP_UI_PROPERTY.TABLEVIEW_WC_DEFAULT_SCROLLABLE, true)
	//INICIO DEL MENU; ESCONDO BOTONES Y MENU DE SERVOY
	globals.gLoginUserv = security.getUserName()
	globals.gHistoriaIndice = 0
	
	//FILTRO A LA SOLUCION
	var sol = application.getSolutionName()
	
	/**@type {JSFoundSet<db:/fwk_navigation_infocom/soluciones>} */
	var fs = databaseManager.getFoundSet('fwk_navigation_infocom','soluciones')
	fs.find()
	fs.nombre = sol
	fs.search()
	globals.gIdSolucion = fs.id_solucion
	
	//FILTRO DE USUARIOS PARA CONFIRMAR EL SERVIDOR CON EL Q TRABAJA
	globals.gUsuarioID 		= security.getUserUID()
	globals.gUservID		= gusuario_to_usuarios.userv_id
	globals.gIdRelacionado	= gusuario_to_usuarios.id_relacionado
	
	databaseManager.addTableFilterParam('fwk_navigation_infocom','usuarios','userv_id','=',globals.gUservID,'USERV_FWK')
	databaseManager.addTableFilterParam('fwk_navigation_infocom','rel_solucion_usuario','usuario_id','=',globals.gUsuarioID,'SOLUCION_USR_FWK')
	databaseManager.addTableFilterParam('fwk_navigation_infocom',null,'solucion_id','=',globals.gIdSolucion,'SOLUCION_ID_FWK')
	//CONFIRMO Q EL USUARIO PUEDA ENTRAR A LA SOLUCION
	if (gusuario_to_rel_solucion_usuario.getSize() == 0)
	{
		globals.DIALOGS.showErrorDialog('Error','El usuario no tiene los permisos necesarios para entrar','OK')
		security.logout()
		return
	}
	
	if (userv_to_soluciones_x_uservs.getSize() > 0)
	{
		var $servers = guserv_to_servers_x_uservs.getSize()
		if ($servers == 0)
		{
			databaseManager.addTableFilterParam('infocom',null,'userv_id','=',globals.gUservID,'INFOCOM')
		}
		else
		{
			var $error = 0
			for (var i = 1 ; i <= $servers ; i++)
			{
				guserv_to_servers_x_uservs.setSelectedIndex(i)
				if (databaseManager.switchServer(guserv_to_servers_x_uservs.server_original, guserv_to_servers_x_uservs.server_cambio) == false)
				{
					$error = 1
					break;
				}
				databaseManager.addTableFilterParam(guserv_to_servers_x_uservs.server_cambio,null,'userv_id','=',globals.gUservID,'SERVER_'+i)
			}
			if ($error == 1)
			{	
				globals.DIALOGS.showErrorDialog('Error','Error al cambiar el servidor','OK')
				security.logout()
				return
			}
		}
	}
	else
	{
		globals.DIALOGS.showErrorDialog('Error','El userv no tiene los permisos necesarios para entrar','OK')
		security.logout()
		return
	}
	
	//METODO INICIAL DE LA SOLUCION
	if ((gidsolucion_to_soluciones.metodo_inicial != null) && (gidsolucion_to_soluciones.metodo_inicial != ''))
	{
		try
		{
			eval('globals.'+ gidsolucion_to_soluciones.metodo_inicial + '()')
		}
		catch(e)
		{
			globals.DIALOGS.showWarningDialog('Aviso','Error en el inicio: ' + e,'OK')
		}
	}

	globals.cambiarColor()
	//forms.main.elements.tab_menu.tabIndex = gusuario_to_rel_solucion_usuario.tipo_menu
	
	if (gidsolucion_to_soluciones.form_inicial != null)
	{
		globals.mostrarForm(gidsolucion_to_soluciones.form_inicial)
	}
}

/**
 * @properties={typeid:24,uuid:"0CC8C95D-D7AE-486E-AE2F-6DB0070C792E"}
 */
function opcionAlta()
{
	if (gidformactual_to_forms.metodo_alta != null)
	{
		forms[gidformactual_to_forms.nombre][gidformactual_to_forms.metodo_alta]()
		return
	}
	globals.opcionModificar()
	forms[gidformactual_to_forms.nombre].controller.newRecord()
	globals.gEstadoAbm = 1 //ALTA
	forms['menu_opciones'].elements.lbl_reg.text = databaseManager.getFoundSetCount(forms[gidformactual_to_forms.nombre].foundset) + ' registros'
}

/**
 * @properties={typeid:24,uuid:"E310752F-D23C-4C17-8697-3F7C4FDDE846"}
 */
function opcionAnterior()
{
	forms[gidformactual_to_forms.nombre].controller.setSelectedIndex(forms[gidformactual_to_forms.nombre].controller.getSelectedIndex()-1)
}

/**
 * @properties={typeid:24,uuid:"D0BB75DA-67DA-4C21-A70C-B055CDBEFC09"}
 */
function opcionBaja()
{
	var $rta = globals.DIALOGS.showQuestionDialog('Confimar','¿Confirma la baja del registro?','Si','No')
	
	if ($rta == 'Si')
	{
		try 
		{
			if (gidformactual_to_forms.metodo_baja != null)
			{
				forms[gidformactual_to_forms.nombre][gidformactual_to_forms.metodo_baja]()
			}
			else
			{
				databaseManager.startTransaction()
				if (!forms[gidformactual_to_forms.nombre].controller.deleteRecord())
					databaseManager.rollbackTransaction()
				else
					databaseManager.commitTransaction()
			}
		}
		catch (e) 
		{
			globals.DIALOGS.showErrorDialog("Aviso","No puede eliminar dicho registro","OK")
			databaseManager.rollbackTransaction()
		}
		finally
		{
			forms['menu_opciones'].elements.lbl_reg.text = databaseManager.getFoundSetCount(forms[gidformactual_to_forms.nombre].foundset) + ' registros'
		}
	}	
}

/**
 * @properties={typeid:24,uuid:"D50C1A53-7E7E-4C01-8FA2-72F214D16BF1"}
 */
function opcionCancelarMod()
{
	databaseManager.revertEditedRecords()
	databaseManager.setAutoSave(true)
	forms[gidformactual_to_forms.nombre].controller.readOnly = true
	globals.mostrarBotones()
	globals.gEstadoAbm = 0
	globals.finModificar()
	forms['menu_opciones'].elements.lbl_reg.text = databaseManager.getFoundSetCount(forms[gidformactual_to_forms.nombre].foundset) + ' registros'
}

/**
 * @properties={typeid:24,uuid:"05CF4B41-598B-4EEA-8C70-CEA840D9DC86"}
 */
function opcionConfirmarMod()
{
	if (gidformactual_to_forms.metodo_valida != null && gidformactual_to_forms.metodo_valida != '')
	{		
		/*
		 * Se puede enviar un metodo de validacion al confirmar alta o modificación.
		 * Debe ser un metodo del form
		 * Devuelve un array con 3 posiciones:
		 * 1 - Booleano indicando si hubo éxito
		 * 2 - Booleano indicando si se termina la transacción revirtiendo los cambios
		 * 3 - Mensaje de error
		 */
		var metodo = 'forms.'+gidformactual_to_forms.nombre+'.'+gidformactual_to_forms.metodo_valida+'()'
		var res = eval(metodo)
		if (res[0] == false || res == false)
		{
			if (res[2] != null)
				globals.DIALOGS.showWarningDialog('Error',res[2],'OK')
			else
				globals.DIALOGS.showWarningDialog('Error','Falló la validación. Alta denegada','OK')
			
			//res[1] indica si se deben revertir los cambios o no
			if (res[1] == false)
			{
				return false
			}
			databaseManager.revertEditedRecords()
		}
		else
			if (!databaseManager.saveData())
			{
				databaseManager.revertEditedRecords()
				globals.DIALOGS.showWarningDialog('Error','Código Duplicado','OK')
			}
	}
	else
	{
		var grabo = databaseManager.saveData()
		if (grabo == false)
		{
			databaseManager.revertEditedRecords()
			globals.DIALOGS.showWarningDialog('Error','Ocurrió un error en la grabación','OK')
		}
	}
	databaseManager.setAutoSave(true)
	forms[gidformactual_to_forms.nombre].controller.readOnly = true
	globals.mostrarBotones()
	globals.gEstadoAbm = 0 //Vuelve a 0
	globals.finModificar()
	return true
}

/**
 * @properties={typeid:24,uuid:"527D8927-D4F8-4A89-9478-D35AB71C8CF2"}
 */
function finModificar()
{
	var frm = solutionModel.getForm(gidformactual_to_forms.nombre)
	var elem = frm.getFields()
	for (var i = 0; i< elem.length; i++)
	{
		var fld = elem[i]
		if (fld.styleClass == 'editable' || fld.styleClass == 'noeditable')
			fld.styleClass = null
	}
	forms[gidformactual_to_forms.nombre].controller.recreateUI()
}

/**
 * @properties={typeid:24,uuid:"9B442B05-A843-4742-BC46-C4293DFF38E5"}
 */
function opcionImprimir()
{
	var $nombre = gidformactual_to_forms.nombre
	if (gidformactual_to_forms.metodo_impresion != null)
	{
		forms[$nombre][gidformactual_to_forms.metodo_impresion]()
	}
	else
	{
		var $tipo
		if (gidformactual_to_forms.tipo == 1)
			$tipo = true
		else
			$tipo = false
		forms[$nombre].controller.showPrintPreview($tipo)
	}}

/**
 * @properties={typeid:24,uuid:"594AB372-90C0-4232-A3D4-A5B4F5EF41AA"}
 */
function opcionModificar()
{
	databaseManager.setAutoSave(false)
	forms[gidformactual_to_forms.nombre].controller.readOnly = false
	globals.esconderBotones()
	globals.gEstadoAbm = 3 //MODIFICAR
	
	var frm = solutionModel.getForm(gidformactual_to_forms.nombre)
	var elem = frm.getFields()
	for (var i = 0; i< elem.length; i++)
	{
		var fld = elem[i]
		if (fld.editable || fld.displayType == JSField.COMBOBOX)
			fld.styleClass = 'editable'
		else
			fld.styleClass = 'noeditable'
	}
	forms[gidformactual_to_forms.nombre].controller.recreateUI()
}

/**
 * @properties={typeid:24,uuid:"329402BB-C871-400A-81BF-166851DCF3CC"}
 * @AllowToRunInFind
 */
function opcionMostrarTodos()
{
	forms[gidformactual_to_forms.nombre].controller.loadAllRecords()
	forms['menu_opciones'].elements.lbl_reg.text = databaseManager.getFoundSetCount(forms[gidformactual_to_forms.nombre].foundset) + ' registros'
	if (gidformactual_to_forms.pantallas_to_pantalla_asociada != null)
		forms[gidformactual_to_forms.pantallas_to_pantalla_asociada.nombre].controller.loadAllRecords()
	
}

/**
 * @properties={typeid:24,uuid:"65BB53A7-EF7A-4EA0-A511-8C775FF4A3DD"}
 */
function opcionPDF()
{	
	var $nombre = gidformactual_to_forms.nombre
	if (gidformactual_to_forms.metodo_impresion != null)
	{
		forms[$nombre][gidformactual_to_forms.metodo_pdf]()
	}
	else
	{
		var $tipo
		if (gidformactual_to_forms.tipo == 1)
			$tipo = true
		else
			$tipo = false
			
		var type = application.getApplicationType();
		if (type == 5)
			forms[$nombre].controller.showPrintPreview($tipo)
		else
		{
			var fecha = new Date()
			fecha = utils.dateFormat(fecha,'dd-MM-yyyy HH-mm-ss')
			var arch = plugins.file.showFileSaveDialog( 'c:/'+gidformactual_to_forms.titulo + ' ' + fecha + '.pdf', 'Guardar archivo')
			if (arch)
			{
				forms[$nombre].controller.print($tipo,false,plugins.pdf_output.getPDFPrinter(arch.getAbsolutePath()));
				//application.showURL('file:///'+arch.getAbsolutePath())
				application.executeProgram("rundll32.exe", ["url.dll,FileProtocolHandler", arch.getAbsolutePath()])
			}
		}
	}
}

/**
 * @param {String} nombreForm
 * @param {String} titulo
 * @param {Boolean} todosRegistros
 *
 * @properties={typeid:24,uuid:"2C15DC9B-A0FD-415A-9FB2-62F36FE5470D"}
 */
function metodoPdf(nombreForm, titulo, todosRegistros)
{
	var $nombre = nombreForm
			
	var type = application.getApplicationType();
	if (type == APPLICATION_TYPES.WEB_CLIENT)
		forms[$nombre].controller.showPrintPreview(!todosRegistros)
	else
	{
		var fecha = new Date()
		fecha = utils.dateFormat(fecha,'dd-MM-yyyy HH-mm-ss')
		var arch = plugins.file.showFileSaveDialog( 'c:/'+ titulo + ' ' + fecha + '.pdf', 'Guardar archivo')
		if (arch)
		{
			forms[$nombre].controller.print(!todosRegistros,false,plugins.pdf_output.getPDFPrinter(arch.getAbsolutePath()));
			application.executeProgram("rundll32.exe", ["url.dll,FileProtocolHandler", arch.getAbsolutePath()])
		}
	}
}

/**
 * @properties={typeid:24,uuid:"3A3F4C26-78D3-4F69-A6E2-3803216DAB1A"}
 */
function opcionPrimer()
{
	forms[gidformactual_to_forms.nombre].controller.setSelectedIndex(1)
}

/**
 * @properties={typeid:24,uuid:"FB99420D-7F4B-428B-9C37-3F1D9FA1B5DC"}
 */
function opcionSiguiente()
{
	forms[gidformactual_to_forms.nombre].controller.setSelectedIndex(forms[gidformactual_to_forms.nombre].controller.getSelectedIndex()+1)
}

/**
 * @properties={typeid:24,uuid:"C22561A6-95AD-4DF2-8E76-702FC309167E"}
 */
function opcionUltimo()
{
	var $max = forms[gidformactual_to_forms.nombre].foundset.getSize()//databaseManager.getFoundSetCount(forms[gidformactual_to_forms.nombre].foundset)
	forms[gidformactual_to_forms.nombre].controller.setSelectedIndex($max)
}

/**
 * @param {String} grupo
 * @param {Number} estado
 * @properties={typeid:24,uuid:"41BA6A1C-0BF3-40B7-8ABC-B98802E1F0EF"}
 */
function setVisible(grupo, estado)
{
	var $post = ''
/*	if (application.getApplicationType() == APPLICATION_TYPES.WEB_CLIENT)
		$post = '_web'*/

	switch (grupo)
	{
		case 'Alta':
		{
			forms['menu_opciones'].elements['btn_alta'+$post].visible = estado
			break;
		}
		case 'Baja':
		{
			forms['menu_opciones'].elements['btn_baja'+$post].visible = estado
			break;
		}
		case 'Modifica':
		{
			forms['menu_opciones'].elements['btn_modif'+$post].visible = estado
			break;
		}
		case 'Impresion':
		{
			forms['menu_opciones'].elements['btn_pdf'+$post].visible 		= estado
			forms['menu_opciones'].elements['btn_imprimir'+$post].visible 	= estado
			break;
		}
		case 'Movimiento':
		{
			forms['menu_opciones'].elements['btn_ultimo'+$post].visible 	= estado
			forms['menu_opciones'].elements['btn_siguiente'+$post].visible 	= estado
			forms['menu_opciones'].elements['btn_pri'+$post].visible 		= estado
			forms['menu_opciones'].elements['btn_anterior'+$post].visible 	= estado
			//forms['menu_opciones'].elements.lbl_reg.visible = estado
			break;
		}
		case 'Modificacion':
		{
			globals.cambiarConfirmar(estado)
			break;
		}
		case 'Exporta':
		{
			forms['menu_opciones'].elements['btn_csv'+$post].visible = estado
			forms['menu_opciones'].elements['btn_xls'+$post].visible = estado
		}
/*		case 'Busqueda':
		{
			forms.main.elements['textoBusqueda'+$post].visible 		= estado
			forms.main.elements['btn_buscar'+$post].visible 		= estado
			forms.main.elements['btn_mostrartodos'+$post].visible 	= estado
		}*/
	}
}

/**
 * @properties={typeid:24,uuid:"93F3F567-A57B-448E-9AAA-C87E56B5EE66"}
 */
function salir(event) {
	var $rta = globals.DIALOGS.showQuestionDialog('Salir','¿Seguro que desea salir?','Si','No')
	if ($rta == 'Si')
	{
		security.logout()
		if (application.getApplicationType() == APPLICATION_TYPES.SMART_CLIENT)
			application.exit()
		else
			application.closeSolution()
	}
}

/**
 * 
 * @param {String} extension
 * @param {String} comienzo_archivo
 * @param {String} comienzo_linea
 * @param {String} marca_txt
 * @param {String} separador
 * @param {String} fin_linea
 * @param {String} fin_archivo
 * @param {String} [frm]
 * 
 * @properties={typeid:24,uuid:"1162D7D9-2471-48CC-BE3D-EF05D0DAB240"}
 */
function archivoExcel(extension,comienzo_archivo,comienzo_linea,marca_txt,separador,fin_linea,fin_archivo, frm)
{
	if (!frm)
	{
		frm = gidformactual_to_forms.nombre
	}
	var $readOnly = forms[frm].controller.readOnly
	forms[frm].controller.readOnly = false
	var elems = forms[frm].elements.allnames
	if (elems.length > 0)
	{
		var cols = new Array()
		var tituloCols = new Array()
		for (var i = 0; i < elems.length ; i++)
		{
			if ((forms[frm].elements[elems[i]].getElementType() != ELEMENT_TYPES.BUTTON)&& (forms[frm].elements[elems[i]].getElementType() != ELEMENT_TYPES.LABEL)&& (forms[frm].elements[elems[i]].getElementType() != ELEMENT_TYPES.IMAGE_MEDIA)&& (forms[frm].elements[elems[i]].getElementType() != ELEMENT_TYPES.TABPANEL)&& (forms[frm].elements[elems[i]].getElementType() != ELEMENT_TYPES.PORTAL)&& (forms[frm].elements[elems[i]].getElementType() != ELEMENT_TYPES.PASSWORD) )
			{
				cols[i] = forms[frm].elements[elems[i]].getDataProviderID()
				tituloCols[i] = forms[frm].elements[elems[i]].getTitleText()
			}
		}
		/** @type {Date}*/
		var fecha = application.getServerTimeStamp()
		fecha = utils.dateFormat(fecha,'dd-MM-yyyy hh-mm-ss')
		var $nombre = gidformactual_to_forms.titulo + ' ' + fecha + extension
		var jsFile
		if (application.getApplicationType() == APPLICATION_TYPES.WEB_CLIENT)
		{
			jsFile = plugins.file.createFile($nombre)
		}
		else
		{
			jsFile = plugins.file.showFileSaveDialog($nombre)
		}
		if (jsFile)
		{
			var fw = new Packages.java.io.FileWriter(jsFile.getAbsolutePath());
			var bw = new Packages.java.io.BufferedWriter(fw);
			if (comienzo_archivo != '')
			{
				bw.write(comienzo_archivo,0,comienzo_archivo.length)
				bw.newLine()
			}
			//TITULO + NOMBRE Y CUIT DE LA EMPRESA
			var linea = comienzo_linea + gidformactual_to_forms.titulo + fin_linea
			bw.write(linea,0,linea.length)
			bw.newLine()
			linea = comienzo_linea + usuarios_to_uservs.descripcion + fin_linea
			bw.write(linea,0,linea.length)
			bw.newLine()
			linea = comienzo_linea + usuarios_to_uservs.cuit + fin_linea
			bw.write(linea,0,linea.length)
			bw.newLine()
			
			//ESCRIBO EL NOMBRE DE LAS COLUMNAS
			linea = comienzo_linea
			for (var j = 0 ; j < cols.length ; j++)
			{
				if (j != 0)
					linea += separador
				linea += marca_txt + tituloCols[j] + marca_txt 
			}
			linea += fin_linea
			bw.write(linea,0,linea.length)
			linea 	= comienzo_linea
			var fs 	= forms[frm].foundset
			var tbl = databaseManager.getTable( fs)
					
			i = 1
			var $cant = databaseManager.getFoundSetCount(fs)
			while ((i <= globals.gLimiteCsv) && (i <= $cant))
			{
				var $rcd = fs.getRecord(i)
				var campo
				for (j = 0 ; j < cols.length ; j++)
				{
					campo = ''
					if ($rcd[cols[j]] != null)
					{
						if (forms[frm].elements[elems[j]].getElementType() == ELEMENT_TYPES.CALENDAR)
							campo = utils.dateFormat($rcd[cols[j]], forms[frm].elements[elems[j]].format)
						else
						{
							var $vl = forms[frm].elements[elems[j]].getValueListName()
							if ($vl == null)
							{
								campo = $rcd[cols[j]]
								if ((tbl.getColumn(cols[j])!= null) && (tbl.getColumn(cols[j]).getType() == JSColumn.DATETIME))
									campo = utils.dateFormat(campo, forms[frm].elements[elems[j]].format)
								else
									if ((tbl.getColumn(cols[j])!= null) && (tbl.getColumn(cols[j]).getType() == JSColumn.NUMBER))
										campo = utils.numberFormat(campo,'###,###.00')
							}
							else
							{
								campo = application.getValueListDisplayValue($vl,$rcd[cols[j]])
							}
						}
					}
					if (j != 0)
						linea += separador
					linea += marca_txt + campo + marca_txt
				}
				bw.newLine()
				linea += fin_linea
				bw.write(linea,0,linea.length)
				linea = comienzo_linea
				i++
			}
			if (fin_archivo != '')
			{
				bw.write(fin_archivo,0,fin_archivo.length)
			}
			bw.close()
			fw.close()
			forms[frm].controller.readOnly = $readOnly
			if (application.getApplicationType() == APPLICATION_TYPES.WEB_CLIENT)
			{
				var mimeType = 'application/vnd.ms-excel'
				if (!plugins.file.writeFile(jsFile.getName(), jsFile.getBytes(), mimeType))
				{
					globals.DIALOGS.showErrorDialog('Error','Ocurrió un error y no se pudo grabar el archivo','OK');
				}
				plugins.file.deleteFile(jsFile.getAbsolutePath())
			}
			else
			{
				application.executeProgram("rundll32.exe", ["url.dll,FileProtocolHandler", jsFile.getAbsolutePath()])
			}
		}
	}
	else
		globals.DIALOGS.showWarningDialog('Aviso','Error de configuración del formulario','OK');
}

/**
 * @properties={typeid:24,uuid:"E7371996-79F7-460E-BA6F-DB1AEF0787A1"}
 */
function opcionXls()
{
	
	if (gidformactual_to_forms.metodo_xls != null)
	{
		forms[gidformactual_to_forms.nombre][gidformactual_to_forms.metodo_xls]()
		return
	}
	
	archivoExcel('.xls','<TABLE CELLPADDING="1" CELLSPACING="0" BORDER="0">','<tr><td>','','</td><td>','</td></tr>','</table>')
		
//	var elems = forms[gidformactual_to_forms.nombre].elements.allnames
//	/**@type {Array<String>} */
/*	var campos = new Array()
	var titulos = new Array()
	for (var i = 0 ; i < elems.length ; i++)
	{
		campos[i] = forms[gidformactual_to_forms.nombre].elements[i].getDataProviderID()
		titulos[i] = forms[gidformactual_to_forms.nombre].elements[i].titleText
	}
	var $ds = databaseManager.convertToDataSet(forms[gidformactual_to_forms.nombre].foundset,campos)
	
	for (var j = 0 ; j < $ds.getMaxColumnIndex() ; j++)
	{
		$ds.setValue(-1,j+1,titulos[j])
	}
	
	var $html = $ds.getAsHTML()
	application.output($html)
	var fecha = application.getServerTimeStamp()
	fecha = utils.dateFormat(fecha,'dd-MM-yyyy hh-mm-ss')
	var $nombre = gidformactual_to_forms.titulo + ' ' + fecha + '.xls'
	if (application.getApplicationType() == APPLICATION_TYPES.WEB_CLIENT)
	{
		var jsFile = plugins.file.createFile($nombre)
	}
	else
	{
		var jsFile = plugins.file.showFileSaveDialog($nombre)
	}
	if (jsFile)
	{
		var fw = new Packages.java.io.FileWriter(jsFile.getAbsolutePath());
		var bw = new Packages.java.io.BufferedWriter(fw);
	
		bw.write($html,0,$html.length)
		bw.close()
		fw.close()
		
		if (application.getApplicationType() == APPLICATION_TYPES.WEB_CLIENT)
		{
			var mimeType = 'application/vnd.ms-excel'
			if (!plugins.file.writeFile(jsFile.getName(), jsFile.getBytes(), mimeType))
			{
				globals.DIALOGS.showErrorDialog('Error','Ocurrio un error y no se pudo grabar el archivo','OK');
			}
			plugins.file.deleteFile(jsFile.getAbsolutePath())
		}
		else
		{
			//application.showURL('file:///'+ jsFile.getAbsolutePath())
			application.executeProgram("rundll32.exe", ["url.dll,FileProtocolHandler", jsFile.getAbsolutePath()])
		}
	}*/
}

/**
 * @properties={typeid:24,uuid:"FB83398C-63CC-4F68-A90A-439C420ADE19"}
 */
function opcionCsv() {
	if (gidformactual_to_forms.metodo_csv != null)
	{
		forms[gidformactual_to_forms.nombre][gidformactual_to_forms.metodo_csv]()
		return
	}
	archivoExcel('.csv','','','"',';','','')

	
/*		var $readOnly = forms[gidformactual_to_forms.nombre].controller.readOnly
		forms[gidformactual_to_forms.nombre].controller.readOnly = false
		var elems = forms[gidformactual_to_forms.nombre].elements.allnames
		if (elems.length > 0)
		{
			var cols = new Array()
			var tituloCols = new Array()
			for (var i = 0; i<elems.length ; i++)
			{
				if ((forms[gidformactual_to_forms.nombre].elements[elems[i]].getElementType() != ELEMENT_TYPES.BUTTON)&& (forms[gidformactual_to_forms.nombre].elements[elems[i]].getElementType() != ELEMENT_TYPES.LABEL)&& (forms[gidformactual_to_forms.nombre].elements[elems[i]].getElementType() != ELEMENT_TYPES.IMAGE_MEDIA)&& (forms[gidformactual_to_forms.nombre].elements[elems[i]].getElementType() != ELEMENT_TYPES.TABPANEL)&& (forms[gidformactual_to_forms.nombre].elements[elems[i]].getElementType() != ELEMENT_TYPES.PORTAL)&& (forms[gidformactual_to_forms.nombre].elements[elems[i]].getElementType() != ELEMENT_TYPES.PASSWORD) )
				{
					cols[i] = forms[gidformactual_to_forms.nombre].elements[elems[i]].getDataProviderID()
					tituloCols[i] = forms[gidformactual_to_forms.nombre].elements[elems[i]].getTitleText()
				}
			}

			var fecha = application.getServerTimeStamp()
			fecha = utils.dateFormat(fecha,'dd-MM-yyyy hh-mm-ss')
			var jsFile = plugins.file.showFileSaveDialog( 'c:/'+ gidformactual_to_forms.titulo + ' ' + fecha + '.csv' )
			if (jsFile)
			{
				var fw = new Packages.java.io.FileWriter(jsFile.getAbsolutePath());
				var bw = new Packages.java.io.BufferedWriter(fw);
				
				//ESCRIBO EL NOMBRE DE LAS COLUMNAS EN LA PRIMER LINEA DEL ARCHIVO
				var linea = ''
				for (var j = 0 ; j < cols.length ; j++)
				{
					if (j!=0)
						linea+= ';'
					linea+= '"' + tituloCols[j] + '"'
				}
				bw.write(linea,0,linea.length)
				linea = ''
				var fs = forms[gidformactual_to_forms.nombre].foundset
				var tbl = databaseManager.getTable( fs)
						
				i = 1
				var $cant = databaseManager.getFoundSetCount(fs)
				while ((i <= globals.gLimiteCsv) && (i <= $cant))
				{
					fs.setSelectedIndex(i)
					var campo
					for (j=0;j<cols.length;j++)
					{
						if (forms[gidformactual_to_forms.nombre].elements[elems[j]].getElementType() == ELEMENT_TYPES.CALENDAR)
							campo = utils.dateFormat(fs.getDataProviderValue(cols[j]), forms[gidformactual_to_forms.nombre].elements[elems[j]].format)
						else
						{	
							if (forms[gidformactual_to_forms.nombre].elements[elems[j]].getValueListName() == null) // 29-07-2010 
							{
								campo = fs.getDataProviderValue(cols[j])
								if ((tbl.getColumn(cols[j])!= null) && (tbl.getColumn(cols[j]).getType() == JSColumn.DATETIME))
									campo = utils.dateFormat(campo, forms[gidformactual_to_forms.nombre].elements[elems[j]].format)
							}
							else
							{
								forms[gidformactual_to_forms.nombre].elements[elems[j]].requestFocus()
								forms[gidformactual_to_forms.nombre].elements[elems[j]].selectAll()
								campo = forms[gidformactual_to_forms.nombre].elements[elems[j]].getSelectedText()
							}
						}
						if (j!=0)
							linea+= ';'
						linea+= '"' + campo + '"'
					}
					bw.newLine()
					bw.write(linea,0,linea.length)
					linea = ''
					i++
				}
				bw.close()
				fw.close()
				forms[gidformactual_to_forms.nombre].controller.readOnly = $readOnly
				//application.showURL('file:///'+ jsFile.getAbsolutePath())
				application.executeProgram("rundll32.exe", ["url.dll,FileProtocolHandler", jsFile.getAbsolutePath()])
			}
		}
		else
			globals.DIALOGS.showWarningDialog('Aviso','El form no tiene elementos','OK');
	}*/
}

/**
 * @properties={typeid:24,uuid:"725A2A15-9FEB-423F-9CA6-2EE452037FCD"}
 */
function opcionBackup() {
	if (application.getApplicationType() == APPLICATION_TYPES.WEB_CLIENT)
	{
		globals.DIALOGS.showWarningDialog('Aviso','Esta opción no esta disponible para cliente web','OK');
	}
	else
	{
		var tbl = databaseManager.getTable( forms[gidformactual_to_forms.nombre].controller.getDataSource())
		var cols = tbl.getColumnNames()
		
		var jsFile = plugins.file.showFileSaveDialog( 'c:/'+tbl.getSQLName()+'.csv')
		if (jsFile)
		{
			var fw = new Packages.java.io.FileWriter(jsFile.getAbsolutePath());
			var bw = new Packages.java.io.BufferedWriter(fw);
			
			//ESCRIBO EL NOMBRE DE LAS COLUMNAS EN LA PRIMER LINEA DEL ARCHIVO
			var linea = ''
			for (var j = 0 ; j < cols.length ; j++)
			{
				if (j!=0)
					linea+= ','
				linea+= '"' + cols[j] + '"'
			}
			bw.write(linea,0,linea.length)
			linea = ''
			var fs = forms[gidformactual_to_forms.nombre].foundset
			
			var i = 1
			var $cant = fs.getSize()
			while ((i <= globals.gLimiteCsv) && (i<=$cant))
			{
				fs.setSelectedIndex(i)
				for (j=0;j<cols.length;j++)
				{
					var campo = fs.getDataProviderValue(cols[j])
		
					if (j!=0)
						linea+= ','
					linea+= '"' + campo + '"'
				}
				bw.newLine()
				bw.write(linea,0,linea.length)
				linea = ''
				i++
			}
			
			bw.close()
			fw.close()
			globals.DIALOGS.showInfoDialog('Exito','El archivo fue creado con éxito','OK');
		}
	}
}

/**
 * Callback method for when an error occurred.
 *
 * @param {ServoyException} ex exception to handle
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"5DD2A56E-AA31-47DE-A9DA-37DEFF15A6A2"}
 */
function onError(ex) {
	if (databaseManager.hasTransaction())
	{
		databaseManager.rollbackTransaction()
	}
	
	if (databaseManager.getAutoSave() == false)
	{
		databaseManager.revertEditedRecords()
	}
	
	var svyExpList = new java.util.HashMap();
	
	//Add your message to the respective Exceptions 
	svyExpList.put(ServoyException.ACQUIRE_LOCK_FAILURE, "Falla en adquisicion de lock (Nº 1)");
	svyExpList.put(ServoyException.BAD_SQL_SYNTAX, "Error en la sintaxis de SQL (Nº 2)");
	svyExpList.put(ServoyException.DATA_ACCESS_RESOURCE_FAILURE, "Error en el acceso a los datos (Nº 3)");
	svyExpList.put(ServoyException.DATA_INTEGRITY_VIOLATION, "Violacion de la integridad de los datos (Nº 4)");
	svyExpList.put(ServoyException.DEADLOCK, "Dead Lock (Nº 5)");
	svyExpList.put(ServoyException.DELETE_NOT_GRANTED, "Baja no autorizada (Nº 6)");
	svyExpList.put(ServoyException.EXECUTE_PROGRAM_FAILED, "Error al ejecutar un programa (Nº 7)");
	svyExpList.put(ServoyException.INCORRECT_LOGIN, "Login incorrecto (Nº 8)");
	svyExpList.put(ServoyException.INVALID_INPUT, "Entrada incorrecta (Nº 9)");
//	svyExpList.put(ServoyException.INVALID_INPUT_FORMAT, "Formato de entrada incorrecto (Nº 10)");
	svyExpList.put(ServoyException.INVALID_RESULTSET_ACCESS, "Acceso a resultset invalido (Nº 11)");
	svyExpList.put(ServoyException.NO_ACCESS, "No tiene acceso (Nº 12)");
	svyExpList.put(ServoyException.NO_CREATE_ACCESS, "No tiene acceso para crear (Nº 13)");
	svyExpList.put(ServoyException.NO_DELETE_ACCESS, "No tiene acceso para borrar (Nº 14)");
	svyExpList.put(ServoyException.NO_LICENSE, "No hay licencias disponibles (Nº 15)");
	svyExpList.put(ServoyException.NO_MODIFY_ACCESS, "No tiene acceso para modificar (Nº 16)");
	svyExpList.put(ServoyException.NO_PARENT_DELETE_WITH_RELATED_RECORDS, "No se puede borrar el registro relacionado (padre) (Nº 17)");
	svyExpList.put(ServoyException.NO_RELATED_CREATE_ACCESS, "No tiene acceso para crear en la relacion (Nº 18)");
	svyExpList.put(ServoyException.PERMISSION_DENIED, "Permiso denegado (Nº 19)");
	svyExpList.put(ServoyException.RECORD_LOCKED, "Registro clausurado (Nº 20)");
	svyExpList.put(ServoyException.SAVE_FAILED, "Fallo la grabacion de datos (Nº 21)");
	svyExpList.put(ServoyException.UNKNOWN_DATABASE_EXCEPTION, "Ocurrio un error en la base de datos (Nº 22)");
	
	/**@type {String} */	
	var msg
	if (svyExpList.containsKey(ex.getErrorCode())) //Servoy Exception
	{
		msg = svyExpList.get(ex.getErrorCode());
		globals.DIALOGS.showErrorDialog('Error', msg +' Codigo de Error: '+ex.getErrorCode(), 'OK');
	}
	else
	{
		msg = ex.getMessage()
		msg.replace("'",' ')
		globals.DIALOGS.showErrorDialog('Error',msg, 'OK');
	}
	return true
}

/**
 * @properties={typeid:24,uuid:"5F16ACA2-D922-4D0F-9BA3-FF5EA676E041"}
 */
function altaLog(accion, tabla, id, codigo, texto) {
	var $sql = 'INSERT INTO log(fecha_operacion, userv_id, usuario_id, accion, tabla, registro_id, registro_codigo, solucion, nombre_form, texto) '+
				'VALUES (			?, 				?, 			?, 		?, 		?, 			?, 				?, 			?, 			?,		?);'
	var $args = [application.getServerTimeStamp(), globals.gUservID, globals.gUsuarioID, accion, tabla, id, codigo, application.getSolutionName(), gidformactual_to_forms.nombre, texto]
	if (!plugins.rawSQL.executeSQL('fwk_navigation_infocom', 'log', $sql, $args))
		application.output(plugins.rawSQL.getException())
}

/**
 * @properties={typeid:24,uuid:"C4D81EA9-110D-4E55-A122-0B2117F8380F"}
 */
function configWeb() {
	if (application.getApplicationType() == APPLICATION_TYPES.WEB_CLIENT)
	{
		forms.main.elements.lbl_favoritos_web.visible 		= true
		forms.main.elements.lbl_favoritos_smart.visible 	= false
		forms.main.elements.grp_web.visible					= true
		forms.main.elements.grp_smart.visible				= false
		forms.menu_opciones.elements.grp_web.visible 		= true
		forms.menu_opciones.elements.grp_smart.visible 		= false
		forms.opciones_usuario.elements.grp_web.visible 	= true
		forms.opciones_usuario.elements.grp_smart.visible 	= false
	}
	else
	{
		forms.main.elements.lbl_favoritos_web.visible 		= false
		forms.main.elements.lbl_favoritos_smart.visible 	= true
		forms.main.elements.grp_web.visible					= false
		forms.main.elements.grp_smart.visible				= true
		forms.menu_opciones.elements.grp_web.visible 		= false
		forms.menu_opciones.elements.grp_smart.visible 		= true
		forms.opciones_usuario.elements.grp_web.visible 	= false
		forms.opciones_usuario.elements.grp_smart.visible 	= true
	}
}

/**
 * @properties={typeid:24,uuid:"56466D3E-6CD3-4906-97CC-7AACEB520EF1"}
 */
function cambiarColor() {
	var $forms = ['cambioPass','main','usuario_fwk']
	//var $forms = ['main','menu_pantallas', 'favoritos_usuario','favoritos_usuario_tbl','opciones_usuario','pantalla_ayuda','preferencias_usuario']
	for (var j = 0 ; j < $forms.length ; j++)
	{
		globals.cambiarEstilo($forms[j])
	}
	forms.tree.onLoad()
	//globals.configWeb()
	globals.esconderBotones()
}

/**
 * @properties={typeid:24,uuid:"7BEC2D88-8997-4552-ADDB-C068CEA0E6B8"}
 */
function opcionVolver() {
	if (globals.gHistoriaIndice > 1)
	{	
		globals.gHistoriaIndice--
		globals.gShow(globals.ar[globals.gHistoriaIndice]);
		globals.gHistoriaIndice--
	}
}

/**
 * @param {String} nombre_form
 * @param {String} nombre_ventana
 * @param {String} [titulo]
 * @param {Number} [alto]
 * @param {Number} [ancho]
 * 
 * @properties={typeid:24,uuid:"14BF65B4-BF30-49AF-A7AA-4EBE4DE14E5B"}
 */
function formEnVentana(nombre_form, nombre_ventana, titulo, alto, ancho) {
	globals.cambiarEstilo(nombre_form)
	var $win = application.createWindow(nombre_ventana,JSWindow.MODAL_DIALOG)
	if (titulo)
		$win.title = titulo
	else
		$win.title = 'Nueva Ventana'
	if (alto && ancho)
		$win.setSize(alto,ancho)
	forms[nombre_form].controller.show($win)
}

/**
 * @param {String} tipo
 * @param {String} reporte
 * @param {String} nombre
 * @param {JSFoundSet|JSDataSet|String} ds
 * @param {Object} params
 * 
 * @properties={typeid:24,uuid:"BF829466-04E4-45DE-8C12-C8B452ED8C13"}
 */
function metodoJasper(tipo, reporte, nombre, ds, params) {
	/** @type {Date}*/
	var $fecha = application.getServerTimeStamp()
	$fecha = utils.dateFormat($fecha,'dd-MM-yyyy hh-mm-ss')
	var $nombre = nombre + '_' + $fecha + '.'
	if (tipo == 'impresion')
	{
		plugins.jasperPluginRMI.runReport(ds,reporte,$nombre + 'pdf',plugins.jasperPluginRMI.OUTPUT_FORMAT.VIEW,params,'es_AR')
	}
	else
	{
		if (application.getApplicationType() == APPLICATION_TYPES.WEB_CLIENT)
		{
			switch( tipo )
			{
				case 'pdf' : plugins.jasperPluginRMI.runReport(ds,reporte,$nombre +'pdf',plugins.jasperPluginRMI.OUTPUT_FORMAT.VIEW,params,'es_AR'); break;
				case 'csv' : plugins.jasperPluginRMI.runReport(ds,reporte,'c:/'+$nombre+'csv',plugins.jasperPluginRMI.OUTPUT_FORMAT.CSV,params,'es_AR'); break;
				case 'xls' : plugins.jasperPluginRMI.runReport(ds,reporte,'c:/'+$nombre+'xls',plugins.jasperPluginRMI.OUTPUT_FORMAT.XLS,params,'es_AR'); break;
				default : globals.DIALOGS.showWarningDialog('Aviso','Error en tipo de archivo','OK'); break;
			}
		}
		else
		{
			var jsFile
			jsFile = plugins.file.showFileSaveDialog($nombre + tipo)
			if (jsFile)
			{
				switch( tipo )
				{
					case 'pdf' : plugins.jasperPluginRMI.runReport(ds,reporte,jsFile.getAbsolutePath(),plugins.jasperPluginRMI.OUTPUT_FORMAT.PDF,params,'es_AR'); break;
					case 'csv' : plugins.jasperPluginRMI.runReport(ds,reporte,jsFile.getAbsolutePath(),plugins.jasperPluginRMI.OUTPUT_FORMAT.CSV,params,'es_AR'); break;
					case 'xls' : plugins.jasperPluginRMI.runReport(ds,reporte,jsFile.getAbsolutePath(),plugins.jasperPluginRMI.OUTPUT_FORMAT.XLS,params,'es_AR'); break;
					default : globals.DIALOGS.showWarningDialog('Aviso','Error en tipo de archivo','OK'); break;
				}
				application.executeProgram("rundll32.exe", ["url.dll,FileProtocolHandler", jsFile.getAbsolutePath()])
			}
		}
	}
}
